﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VisionFrame.Base;

namespace ImageProcess
{
    public class ImageShowNodeModel : NodeModelBase
    {
        public ImageShowNodeModel()
        {
            this.NodeName = "图像显示";

            this.Arguments.Add(new VisionFrame.Base.Models.NodeArgModel
            {
                ArgName = "图像Handle",
                ArgType = "IntPtr",
                Direction = "输入",
                ValueMode = 0
            });
            this.Arguments.Add(new VisionFrame.Base.Models.NodeArgModel
            {
                ArgName = "图像宽",
                ArgType = "Int",
                Direction = "输出",
                ValueMode = 0
            });
            this.Arguments.Add(new VisionFrame.Base.Models.NodeArgModel
            {
                ArgName = "图像高",
                ArgType = "Int",
                Direction = "输出",
                ValueMode = 0
            });
        }

        public override void Execute(IFlowContext flowContext)
        {
            if (this.Arguments[0].ArgValue == null)
                throw new Exception("图像Handle参数未配置");

            var am = flowContext.ArgumentList
                .FirstOrDefault(a => a.ArgName == this.Arguments[0].ArgValue.ToString());

            if (am.ArgType != this.Arguments[0].ArgType)
                throw new Exception("参数配置异常！类型不匹配");

            if (IntPtr.TryParse(am.Value.ToString(), out IntPtr img_handler))
            {
                // 
                //Bitmap bitmap = Bitmap.FromHbitmap(img_handler);


                //bitmap.Width
                //bitmap.Height

                flowContext.ShowImage(img_handler);
            }
            else
                throw new Exception("图像Handle数据无效");
        }
    }
}
